package cn.ac.iscas.domain.dameng;


/**
 *
 * @author zhangjq
 * @version 1.0
 * @date 2022/5/19 15:52
 * @since jdk1.8
 */
public enum DamengColumnType {

    /**
     * NUMERIC数据类型用于存储零、正负定点数。其中：精度是一个无符号整数，定义了总的数字数，精度范围是1至38，
     * 标度定义了小数点右边的数字位数，定义时如省略精度，则默认是16。如省略标度，则默认是 0。一个数的标度不应大于其精度。
     * 例如：NUMERIC(4,1)定义了小数点前面 3位和小数点后面 1位，共4位的数字，范围在-999.9到999.9。
     * 所有NUMERIC数据类型，如果其值超过精度，达梦数据库返回一个出错信息，如果超过标度，则多余的位截断。
     */
    NUMERIC,

    /**
     * 与NUMERIC类型相同
     */
    NUMBER,

    /**
     *与NUMERIC相似
     */
    DECIMAL,
    DEC,

    /**
     * BIT类型用于存储整数数据1、0或NULL，可以用来支持ODBC和JDBC的布尔数据类型。
     */
    BIT,

    /**
     * 用于存储有符号整数，精度为10，标度为0。取值范围为：-2147483648(-2^31)～+2147483647(2^31-1)
     */
    INTEGER,
    INT,

    /**
     * 与INTEGER相同
     */
    PLS_INTEGER,

    /**
     * 用于存储有符号整数，精度为19，标度为0。取值范围为：-9223372036854775808(-2^63)～9223372036854775807(2^63-1)。
     */
    BIGINT,

    /**
     * 用于存储有符号整数，精度为3，标度为0。取值范围为：-128～+127
     */
    TINYINT,

    /**
     * 与TINYINT相似，精度为3，标度为0。
     */
    BYTE,

    /**
     * 用于存储有符号整数，精度为5，标度为0。
     */
    SMALLINT,

    /**
     * BINARY数据类型指定定长二进制数据。缺省长度为1个字节，最大长度由数据库页面大小决定，具体可参考《DM8_SQL语言使用手册》1.4.1节。BINARY常量以0x开始，后跟数据的十六进制表示，例如0x2A3B4058。
     */
    BINARY,

    /**
     * VARBINARY数据类型指定变长二进制数据，用法类似BINARY数据类型，可以指定一个正整数作为数据长度。
     */
    VARBINARY,

    /**
     * REAL是带二进制的浮点数，但它不能由用户指定使用的精度，系统指定其二进制精度为24，十进制精度为7。取值范围-3.4E+38 ～ 3.4E + 38。
     */
    REAL,

    /**
     * FLOAT是带二进制精度的浮点数，精度最大不超过53，如省略精度，则二进制精度为53，十进制精度为15。
     */
    FLOAT,

    /**
     * 同FLOAT相似，精度最大不超过53。
     */
    DOUBLE,

    /**
     * 该类型指明双精度浮点数，其二进制精度为53，十进制精度为15。取值范围-1.7E + 308 ～1.7E + 308。
     */
    DOUBLE_PRECISION,

    /**
     * 定长字符串，最大长度由数据库页面大小决定
     */
    CHARACTER,
    CHAR,

    /**
     * 可变长字符串，最大长度由数据库页面大小决定
     */
    VARCHAR,
    VARCHAR2,

    /**
     * 多媒体类型
     * 变长字符串类型，其字符串的长度最大为2G-1，可用于存储长的文本串。
     */
    TEXT,
    LONGVARCHAR,

    /**
     * 可用于存储多媒体信息中的图像类型。图像由不定长的象素点阵组成，长度最大为2G-1字节。该类型除了存储图像数据之外，还可用于存储任何其它二进制数据。
     */
    IMAGE,
    LONGVARBINARY,

    /**
     * BLOB类型用于指明变长的二进制大对象，长度最大为2G-1字节。
     */
    BLOB,

    /**
     * CLOB类型用于指明变长的字符串，长度最大为2G-1字节。
     */
    CLOB,

    /**
     * BFILE用于指明存储在操作系统中的二进制文件，文件存储在操作系统而非数据库中，仅能进行只读访问。
     */
    BFILE,

    /**
     * DATE类型包括年、月、日信息，定义了’-4712-01-01’和’9999-12-31’之间任何一个有效的格里高利日期。
     */
    DATE,

    /**
     * TIME类型包括时、分、秒信息，定义了一个在’00:00:00.000000’和’23:59:59.999999’之间的有效时间。TIME类型的小数秒精度规定了秒字段中小数点后面的位数，取值范围为0～6，如果未定义，缺省精度为0。
     */
    TIME,

    /**
     * TIMESTAMP/DATETIME类型包括年、月、日、时、分、秒信息，定义了一个在’-4712-01-0100:00:00.000000’和’9999-12-31 23:59:59.999999’之间的有效格里高利日期时间。小数秒精度规定了秒字段中小数点后面的位数，取值范围为0～6，如果未定义，缺省精度为6。
     */
    TIMESTAMP,
    DATETIME,

    /**
     * 描述一个带时区的TIME值，其定义是在TIME类型的后面加上时区信息。时区部分的实质是INTERVAL HOUR TO MINUTE类型，取值范围：-12:59与+14:00之间。例如：TIME ‘09:10:21 +8:00’。
     */
    TIME_WITH_TIME_ZONE,

    /**
     * 描述一个带时区的TIMESTAMP值，其定义是在TIMESTAMP类型的后面加上时区信息。时区部分的实质是INTERVAL HOUR TO MINUTE类型，取值范围：-12:59与+14:00之间。例如：’2009-10-11 19:03:05.0000 -02:10’。
     */
    TIMESTAMP_WITH_TIME_ZONE,

    /**
     * 描述一个本地时区的TIMESTAMP值，能够将标准时区类型TIMESTAMP WITH TIME ZONE类型转化为本地时区类型，如果插入的值没有指定时区，则默认为本地时区。
     */
    TIMESTAMP_WITH_LOCAL_TIME_ZONE,

    /**
     * 布尔数据类型：TRUE和FALSE。DMSQL程序的布尔类型和INT类型可以相互转化。如果变量或方法返回的类型是布尔类型，则返回值为0或1。TRUE和非0值的返回值为1，FALSE和0值返回为0。
     */
    BOOL,
    BOOLEAN,
    DATETIME_WITH_TIME_ZONE,
    INTERVAL_YEAR,
    INTERVAL_YEAR_TO_MONTH,
    INTERVAL_MONTH,
    INTERVAL_DAY,
    INTERVAL_DAY_TO_HOUR,
    INTERVAL_DAY_TO_MINUTE,
    INTERVAL_DAY_TO_SECOND,
    INTERVAL_HOUR,
    INTERVAL_HOUR_TO_SECOND,
    INTERVAL_SECOND

}
